package main 
import (
	"fmt"
)

func main(){
	for i:=1; i<=10;i++{
		fmt.Println("hello world")
	}

	// for 循环第二种写法
	j := 1
	for j <= 10{
		fmt.Println("hello go")
		j ++
	}

	// for 循环第三种写法
	k:=1
	for { // 等价 for ; ; {
		if k <=10{
			fmt.Println("ok")
		}else{
			break
		}
		k ++
	}

	// 4) Golang 提供 for-range 的方式，可以方便遍历字符串和数组(注: 数组的遍历，我们放到讲数组 的时候再讲解)
	// 传统的字符串遍历方式
	var str string = "hello world"
	for i:=0;i<len(str);i++{
		fmt.Printf("%c",str[i])
	}

	// for -range
	fmt.Println()
	str = "abc~ok"
	for index, val :=range str{
		fmt.Printf("index = %d, val=%c \n ",index,val)
	}

	// 如果字符串含有中文，那么传统的遍历字符串方式，就是错误，会出现乱码
	// 传统的字符串的遍历是按照字节来遍历的，而一个汉字在utf8 中是3个字节
	// str 转成[]rune 切片 即可解决问题
	var str3  string ="hello 北京"
	str4 := []rune(str3)
	for i:=0;i<len(str4);i++{
		fmt.Printf("%c \n",str4[i])
	}

	// for range 按照字符遍历，故不存在此问题
	fmt.Println()
	for index, val:=range str3{
		fmt.Printf("index =%d val=%c\n",index,val)
	}
}